package ar.com.quickMart.database;

import java.util.List;

import ar.com.quickMart.logic.HistoryList;
import ar.com.quickMart.logic.Product;
import ar.com.quickMart.logic.Promotion;
import ar.com.quickMart.logic.QuickMartList;

public interface ListDao {
	
	public boolean addProductToList(long listId, long productBarcode, Float price, int number);
	public boolean updateProductOnList(long listId, long productBarcode, Float price, int number);
	public boolean updateProductOnList(long listId, long productBarcode, int number); 
	public boolean removeProductFromList(long listId, long productBarcode);
	public boolean addList(String name, long userId, long branchId);
	public boolean addList(String name, long userId);
	public boolean updateListBranchId(long listId, long branchId);
	public boolean updateListName(long listId, String newListName);
	public boolean removeList(long listId);
	public List<String> getListsNames(long userId);
	public Long getListId(String listName, long userId);
	public List<Product> getListProducts(long userId, String listName);
	public List<Promotion> getListPromotions(long userId, String listName, boolean includePromotionProducts);
	public boolean addPromotionToList(long listId, long promotionId, int count);
	public boolean updatePromotionOnList(long listId, long promotionId, int count);
	public boolean removePromotionFromList(long listId, long promotionId);
	public boolean removeAllPromotionFromLis(long listId);
	
	public Long getListBranchId(long listId);
	public QuickMartList getQuickMartList(String listName, long userId);
	public List<QuickMartList> getQuickMartLists(long userId);
	public boolean updateProductsPrices(long listId ,List<Long> barCodes, List<Float> newPrices);

	public List<HistoryList> getHistoryList(long userId);
	
	public boolean cloneList(String listName, long userId, String newListName);
	
	
}
